#include <iostream>
using namespace std;
const int N = 40003;
// n 代表矩阵的大小, m 代表线条数目，fa 数组用来记录父节点，rank 用来记录秩
int m, n, fa[N], rsr[N];

/**
 * @brief 将二维数组转换为一维索引
 * 公式：横坐标 * 列数 + 纵坐标
 */
inline int transform(int x, int y) { return (x - 1) * n + (y - 1); }

/**
 * @brief 获取集合的根节点
 */
int find(int x) { return x == fa[x] ? x : (fa[x] = find(fa[x])); }

/**
 * @brief 初始化操作，让所有的节点的父节点指向自己
 */
void init() {
  for (int i = 0; i < N; ++i) {
    fa[i] = i;
    rsr[i] = 1;
  }
}

/**
 * @brief 合并操作
 */
void merge(int i, int j) {
  int x = find(i), y = find(j);
  if (rsr[x] <= rsr[y]) {
    fa[x] = y;
    rsr[y] += rsr[x];
  } else {
    fa[y] = x;
    rsr[x] += rsr[y];
  }
}

int main() {
  init();
  cin >> n >> m;
  // x 代表每次划线的横坐标，y 代表纵坐标，res 表示最终结果
  int x, y, res = -1;
  char dir;

  for (int i = 1; i <= m; ++i) {
    cin >> x >> y >> dir;

    int a = transform(x, y),
        b = (dir == 'D') ? transform(x + 1, y) : transform(x, y + 1);
    int pa = find(a), pb = find(b);
    if (pa == pb) {
      res = i;
      break;
    } else {
      merge(pa, pb);
    }
  }

  if (~res)
    cout << res << endl;
  else
    cout << "draw" << endl;

  return 0;
}